package cn.jingyuan.owl.utils.core.getter;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * 基于分组的 Get 接口
 */
public interface GroupedTypeGetter {

    /**
     * 获取 String 型属性值
     *
     * @param key 属性名
     * @param group 分组
     *
     * @return 属性值
     */
    String getStringByGroup(String key, String group);

    /**
     * 获取 Integer 型属性值
     *
     * @param key 属性名
     * @param group 分组
     *
     * @return 属性值
     */
    Integer getIntegerByGroup(String key, String group);

    /**
     * 获取 Short 型属性值
     *
     * @param key 属性名
     * @param group 分组
     *
     * @return 属性值
     */
    Short getShortByGroup(String key, String group);

    /**
     * 获取 Boolean 型属性值
     *
     * @param key 属性名
     * @param group 分组
     *
     * @return 属性值
     */
    Boolean getBooleanByGroup(String key, String group);

    /**
     * 获取 Long 型属性值
     *
     * @param key 属性名
     * @param group 分组
     *
     * @return 属性值
     */
    Long getLongByGroup(String key, String group);

    /**
     * 获取 Character 型属性值
     *
     * @param key 属性名
     * @param group 分组
     *
     * @return 属性值
     */
    Character getCharacterByGroup(String key, String group);

    /**
     * 获取 Double 型属性值
     *
     * @param key 属性名
     * @param group 分组
     *
     * @return 属性值
     */
    Double getDoubleByGroup(String key, String group);

    /**
     * 获取 Byte 型属性值
     *
     * @param key 属性名
     * @param group 分组
     *
     * @return 属性值
     */
    Byte getByteByGroup(String key, String group);

    /**
     * 获取 BigDecimal 型属性值
     *
     * @param key 属性名
     * @param group 分组
     *
     * @return 属性值
     */
    BigDecimal getBigDecimalByGroup(String key, String group);

    /**
     * 获取 BigInteger 型属性值
     *
     * @param key 属性名
     * @param group 分组
     *
     * @return 属性值
     */
    BigInteger getBigIntegerByGroup(String key, String group);

}
